<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    function isPalindrome(str) {
      // 将输入字符串转换为小写，并使用正则表达式移除所有非字母数字字符（标点符号、空格等）
      const cleanedStr = str.toLowerCase().replace(/[\W_]/g, "") // Clean non-alphanumeric
      
    }

    // 测试用例1：检查"Madam"是否为回文（预期结果：true）
    console.log("回文判断 (Madam):", isPalindrome("Madam")) // true

    // 测试用例2：检查"Race car!"是否为回文，注意这里包含空格和标点符号（预期结果：true）
    console.log("回文判断 (Race car!):", isPalindrome("Race car!")) // true

    // 测试用例3：检查"hello"是否为回文（预期结果：false）
    console.log("回文判断 (hello):", isPalindrome("hello")) // false
    /**
     * 回文判断算法
     *
     * 时间复杂度：O(n) - 线性时间复杂度
     * 空间复杂度：O(1) - 只使用了常数级别的额外空间
     *
     * 算法思路：
     * 1. 将字符串转换为小写，并去除非字母和数字字符
     * 2. 使用双指针法，从两端向中间移动，比较字符是否相同
     * 3. 如果遇到不相同的字符，则返回false
     * 4. 如果两指针相遇，则返回true
     */
  </script>
</html>
